<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3//EN">
<HTML><HEAD>
<TITLE>IBM Visualization Data Explorer Programmer&#39;s Reference</TITLE>

<META HTTP-EQUIV="abstract" CONTENT="IBM Visualization Data Explorer
Programmer&#39;s Reference">
<META HTTP-EQUIV="contact" CONTENT="IBM Visualization Data Explorer
(ibmdx@watson.ibm.com)">
<META HTTP-EQUIV="owner" CONTENT="IBM Visualization Data Explorer
(ibmdx@watson.ibm.com)">
<META HTTP-EQUIV="updated" CONTENT="Tue, 16 Sep 1997 ">
<META HTTP-EQUIV="review" CONTENT="Fri, 14 Aug 1998 ">

<META HTTP-EQUIV="keywords" CONTENT="GRAPHICS VISUALIZATION VISUAL PROGRAM DATA
MINING">
<meta http-equiv="content-type" content="text/html;charset=ISO-8859-1">
</HEAD><BODY BGCOLOR="#FFFFFF">

<A NAME="Top_Of_Page"></A>
<H1>IBM Visualization Data Explorer Programmer&#39;s Reference</H1>
<B>&#91; <A HREF="#Bot_Of_Page">Bottom of Page</A> &#124; <A
HREF="progu303.htm">Previous Page</A> &#124; <A HREF="progu305.htm">Next
Page</A> &#124; <A HREF="../proguide.htm#ToC">Table of Contents</A> &#124; <A
HREF="progu097.htm#PToC20">Partial Table of Contents</A> &#124; <A
HREF="progu344.htm#HDRINDEX_START">Index</A> &#93;</B><HR><P>
<H3><A NAME="HDRDXSCEV" HREF="progu097.htm#PToC_398">DXSetCacheEntry,
DXSetCacheEntryV</A></H3>
<A NAME="IDX2048"></A>
<A NAME="IDX2049"></A>
<A NAME="IDX2050"></A>
<A NAME="IDX2051"></A>
<P><STRONG>Function</STRONG>
<P>
Set a cache entry.
<P><STRONG>Syntax</STRONG>
<BR>
<TT><STRONG><BR>
&#35;include &lt;dx/dx.h&gt;<BR>
<P><BR>
Error DXSetCacheEntry(Object out, double cost,<BR>
                      char *function, int key, int n, ...)<BR>
Error DXSetCacheEntryV(Object out, double cost,<BR>
                       char *function, int key, int n, Object *in)<BR>
</STRONG></TT><BR>
<P><STRONG>Functional Details</STRONG>
<P>
Create or alter a cache entry to store a reference to
<TT><STRONG>out</STRONG></TT>.
The cache entry is indexed by a key created from
<TT><STRONG>function</STRONG></TT>,
<TT><STRONG>key</STRONG></TT>,
<TT><STRONG>n</STRONG></TT>,
and the Objects in
the Array
<TT><STRONG>in</STRONG></TT>.
The parameter <TT><STRONG>function</STRONG></TT> makes the key unique to the
caller; <TT><STRONG>key</STRONG></TT> allows the caller to have multiple
cache entries with the same <TT><STRONG>function</STRONG></TT>, and
<TT><STRONG>n</STRONG></TT> and <TT><STRONG>in</STRONG></TT> allow the
cache entry to be related to the Objects that were
used to create it.
Setting a cache entry to <TT><STRONG>NULL</STRONG></TT> removes the entry
and deletes the Object.
<P>
<P>
The <TT><STRONG>out</STRONG></TT> parameter must be a Data Explorer Object.
Private Objects may be used to store arbitrary user data in the cache.
<P>
The entry may be automatically deleted at any time because of memory
constraints unless <TT><STRONG>cost</STRONG></TT> is set to a value equal
to or greater than <TT><STRONG>CACHE_PERMANENT</STRONG></TT>.
<P><B>Notes: </B><OL>
<P><LI>Because Data Explorer modules follow pure function semantics, the cache
should <I>not</I> be used to store a state that affects the
output of the module.
A module must always be able to recreate the Object from the same set
of inputs; the cache should be used only as an optimization tool.
<P><LI>On a multiprocessor machine, processor local information should
<I>not</I> be stored in the cache, since its contents
may be retrieved on another processor.
<P><LI>The cache is local to one machine and cannot be used to
communicate information between modules on different
machines when running in distributed mode.
</OL>
<P>
Because Objects in the cache are candidates for deletion at any time,
<TT><STRONG>DXReference</STRONG></TT> should be called before caching
an Object if that Object is to be used later.
<P>
If you have called DXReference on the Object before putting it in the
cache, call <TT><STRONG>DXDelete</STRONG></TT> when the Object is no
longer being used; the latter call will not delete the
Object from the cache.
(To delete an Object from the cache, set the cache entry to
<TT><STRONG>NULL</STRONG></TT> with <TT><STRONG>DXSetCacheEntry</STRONG></TT>.)
<P>
<P><STRONG>Return Value</STRONG>
<P>
Return <TT><STRONG>OK</STRONG></TT> or return <TT><STRONG>NULL</STRONG></TT> and
set an error code.
<P><STRONG>See Also</STRONG>
<P>
<TT><STRONG>
<A HREF="progu130.htm#HDRDXDEL">DXDelete</A>,
<A HREF="progu159.htm#HDRDXGCEV">DXGetCacheEntry, DXGetCacheEntryV</A>,
<A HREF="progu190.htm#HDRDXGSOT">DXGetObjectTag, DXSetObjectTag</A>,
<A HREF="progu257.htm#HDRDXNP">DXNewPrivate</A>,
<A HREF="progu288.htm#HDRDXREF">DXReference</A>
</STRONG></TT>
<P>
<A HREF="progu059.htm#HDRCACHE">13.5 , "Cache"</A>.
<P><P>
<P><HR><B>&#91; <A HREF="#Top_Of_Page">Top of Page</A> &#124; <A
HREF="progu303.htm">Previous Page</A> &#124; <A HREF="progu305.htm">Next
Page</A> &#124; <A HREF="../proguide.htm#ToC">Table of Contents</A> &#124; <A
HREF="progu097.htm#PToC20">Partial Table of Contents</A> &#124; <A
HREF="progu344.htm#HDRINDEX_START">Index</A> &#93;</B> <br><b>&#91;<a
href="../allguide.htm">Data Explorer Documentation</a>&nbsp;&#124;&nbsp;<a
href="../qikguide.htm">QuickStart Guide</a>&nbsp;&#124;&nbsp;<a
href="../usrguide.htm">User&#39;s Guide</a>&nbsp;&#124;&nbsp;<a
href="../refguide.htm">User&#39;s Reference</a>&nbsp;&#124;&nbsp;<a
href="../proguide.htm">Programmer&#39;s Reference</a>&nbsp;&#124;&nbsp;<a
href="../insguide.htm">Installation and Configuration
Guide</a>&nbsp;&#93;</b><br><p><b>&#91;<a
href="http://www.research.ibm.com/dx">Data Explorer Home
Page</a>&#93;</b><p><HR ALIGN=LEFT WIDTH=600><b>&#91;<A
HREF="http://www.ibm.com/">IBM Home Page</A>&nbsp;&#124;&nbsp;<A
HREF="http://www.ibm.com/Orders/">Order</A>&nbsp;&#124;&nbsp;<A
HREF="http://www.ibm.com/Search/">Search</A>&nbsp;&#124;&nbsp;<A
HREF="http://www.ibm.com/Assist/">Contact IBM</A>&nbsp;&#124;&nbsp;<A
HREF="http://www.ibm.com/Legal/">Legal</A>&nbsp;&#93;</b><hr><p>
<A NAME="Bot_Of_Page"></A>
</BODY></HTML>
